LinuC-2 - 202試験 - 2.07:ネットワーククライアントの管理 - 2.07.3 LDAPクライアントの利用方法

Last Update : August 21 2022 17:47:14

     

a. LDAPの概要

Lightweight Directory Access Protocolの略です。ディレクトリサービスというユーザやコンピュータといった情報を管理するサービスにアクセスするためのプロトコルです。
ディレクトリサービスとは、ネットワークを利用するユーザ名やマシン名などの様々な情報を管理するためのサービスのことで、ユーザ名などのキーとなる値から様々な情報を検索することが可能です。
多くのアプリケーションから利用することを前提として設計されたことから、LDAPをサポートするアプリケーションは非常に多い。メールサーバ、WWWサーバ、FTPサーバなど、インターネットの主要なサーバではLDAPをサポートしている。また、Linuxでは、NSS(Name Service Switch)やPAM(Pluggable Authentication Modules)などを介してユーザをLDAPで管理することができる。


b. LDAPコマンド

openldap-client パッケージには、複数のLDAP クライアントプログラムが含まれています。これらのツールを使用することで、LDAP サーバー内に存在するデータを検索、追加、修正、削除などを行うことが可能になります。

  • ldapsearch --- データ検索
  • ldapadd --- データ追加
  • ldapmodify --- データ更新
  • ldapdelete --- データ削除
  • ldappasswd --- データのパスワード変更
  • ldapmodrdn --- データ名の変更

1.データ検索

LDAPサーバー内のデータを検索するには、ldapsearch コマンドを使います。

● ldapsearch のオプション(一部)
パラメータ 用途
-? ldapsearch の使用方法についてのヘルプを表示します。
-a deref 別名の非参照を指定します。never、always、search、find のいずれかを入力します。このパラメータを省略した場合は、デフォルトの never が適用されます。
-A 属性の値ではなく、属性名のみを検索します。
-b base dn 検索の開始位置になる識別名を指定します。値の指定には引用符を使用します (たとえば、"ou=West,o=Acme,c=US")。

検索するサーバーで検索ベースを指定する必要がある場合は、このパラメータを使用します。それ以外の場合は、省略可能です。

必要に応じて、-b と -s を併用して検索範囲を指定できます。-s、-b を省略すると、起点として指定されたエントリとそのエントリのすべての下位エントリが検索されます。

-B ASCII 形式ではない値の出力を可能にします。
-D bind dn サーバーがユーザーの認証に使用する識別名を指定します。名前は、ディレクトリ内のエントリに対応しており、ディレクトリの検索に必要なアクセス権が設定されている必要があります。

名前は引用符で囲んで指定します (たとえば、"cn=Directory Manager,o=Acme,c=US")。

このパラメータを省略すると、匿名でサーバーに接続されます。サーバーへの匿名接続が許可されていない場合は、-D を使用します。

識別名に対応するパスワードを指定する場合は、-D とともに -w パラメータを使用します。

-f file 使用する検索フィルタを含むファイルを指定します (たとえば、-f filters)。1 行ごとに各検索フィルタを配置します。ldapsearch は 1 行につき 1 回の検索を実行します。必要に応じて、フィルタパターンを指定します。たとえば、-f filters "cn=%s" と指定し、ファイルの各行に共通名の値を入力します。
-F sep 属性名と属性値の間に、等号 (=) ではなく sep を表示します。たとえば、ldapsearch 出力を読み込むツールが別の区切り文字を想定している場合に、このパラメータを使用します。
-h host name 接続先のサーバーのホスト名を指定します (たとえば、-h server.acme.com)。
-l timelimit 検索を完了するまでの時間の上限を秒単位で指定します。このパラメータを指定しないか、限度 0 を指定した場合、検索には無限の時間を要する可能性があります。ただし、ldapsearch はサーバー上で設定された検索制限時間を超えて待機することはありません。
-L LDIF フォーマットで出力するよう指定します。LDIF フォーマットでは、属性の区切りとして、等号 (=) ではなくコロン (:) を使用します。LDIF は、多数のディレクトリエントリを一度に追加または変更するときに便利です。たとえば、LDIF フォーマットを使用すると、結果の内容を LDAP 準拠のディレクトリにインポートできます。
● 単一の(-L)の場合は、LDIFv1 で出力
● 2個の(-LL)を指定するとコメントを出力しない
● 3個の(-L)を指定すると LDIF バージョンを出力しない
-M 参照先オブジェクトを通常のエントリとして管理します。これにより、ldapsearch の返す属性が、参照されるエントリの属性ではなく、参照先エントリ自体の属性になります。
-n 検索方法を表示しますが、実際には検索を実行しません。
-p port サーバーが使用するポートを指定します。このパラメータを省略すると、ポート 389 が使用されます。
-R サーバーから返される検索リファレンスに自動追従しません。
-s scope -b パラメータを使用する場合の検索範囲を指定します。
● base を指定すると、-b パラメータで指定したエントリのみが検索されます。(ベースオブジェクト検索)
● one を指定すると、-b パラメータで指定したエントリのすぐ下位にあるエントリのみが検索されます。指定したエントリそのものは検索されません。(1レベル検索)
● sub を指定すると、-b パラメータで指定したエントリとその下位のエントリすべてが検索されます。これは、-s を使用せずに -b を指定した場合のデフォルトの動作です。(サブツリー検索)
● children を指定すると、ベースオブジェクト以下全てを検索。但し、指定したDNを持つエントリは検索しない。※スコープ children は、LDAPv3 の機能拡張を必要とします。(子エントリ検索)
-b と -s はどちらを先に指定してもかまいません。
-S attribute 指定した属性で結果をソートします。
-z sizelimit 返されるエントリの最大数を指定します。このパラメータを省略するか、0 を指定すると、ldapsearch で返されるエントリの数には制限がなくなります。ただし、サーバーで設定されている数よりも多くなることはありません。
-u ldapsearch から返される識別名を、わかりやすい形式にするように指定します。
-v ldapsearch で詳細情報が表示されるように指定します。
-w password -D パラメータで使用される識別名に対応するパスワードを指定します。
-x -S とともに使用して、LDAP サーバーが結果をソートしてから返すように指定します。-S のみを使用すると、ldapsearch によって結果がソートされます。

(1)一般的な検索

dc=example,dc=comを基点として、objectclass=*のフィルタに合致するエントリを最階層まで検索する

# ldapsearch -b dc=example,dc=com -h localhost -p 389 -D "cn=directory manager" -w - -s sub objectclass=*
Enter bind password:
dn: dc=example,dc=com
objectClass: top
objectClass: domain
dc: example

dn: ou=Groups, dc=example,dc=com
objectClass: top
objectClass: organizationalunit
ou: Groups

dn: cn=Directory Administrators, ou=Groups, dc=example,dc=com
cn: Directory Administrators
objectClass: top
objectClass: groupofuniquenames
ou: Groups
uniqueMember: uid=kvaughan, ou=People, dc=example,dc=com
uniqueMember: uid=rdaugherty, ou=People, dc=example,dc=com
uniqueMember: uid=hmiller, ou=People, dc=example,dc=com

dn: ou=People, dc=example,dc=com
objectClass: top
objectClass: organizationalunit
ou: People
:
(省略)

(2)属性値に一致するエントリを表示する(uid=bassimane)
# ldapsearch -b dc=example,dc=com -h localhost -p 389 -D "cn=directory manager" -w - -s sub uid=bassimane
Enter bind password:
version: 1
dn: uid=bassimane, ou=People, dc=example,dc=com
cn: Blog Assimane
sn: Assimane
givenName: Blog
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
ou: Product Development
ou: People
l: Sunnyvale
uid: bassimane
mail: bassimane@example.com
telephoneNumber: +1 408 555 1111
facsimileTelephoneNumber: +1 408 555 2222
userPassword: {SSHA}mY+g7ibootFnEoDCuQQrZ3Gye4/8XJldHwn/Ww==
roomNumber: 3333


(3)属性値に一致するエントリで表示する属性を指定する(cn sn)
# ldapsearch -b dc=example,dc=com -h localhost -p 389 -D "cn=directory manager" -w - -s sub l=Sunnyvale cn sn
Enter bind password:
version: 1
dn: uid=scarter, ou=People, dc=example,dc=com
cn: Sam Carter
sn: Carter

dn: uid=kvaughan, ou=People, dc=example,dc=com
cn: Kirsten Vaughan
sn: Vaughan

dn: uid=dmiller, ou=People, dc=example,dc=com
cn: David Miller
sn: Miller
:
(省略)


2.属性の変更・削除


3.エントリの追加

ディレクトリのエントリを追加するには、ldapadd コマンドを使用します。
ldapmodify コマンドは文字通りエントリを編集するために使われますが、-aオプションを使用することで次のようにldapaddコマンド同様、エントリの追加を行うことも可能です。

# ldapadd -h localhost -p 389 -D "cn=directory manager" -w - "uid=bassimane, ou=People, dc=example,dc=com"
Enter bind password:

4.エントリの削除

ディレクトリのエントリを削除するには、ldapdelete コマンドを使用します。

# ldapdelete -h localhost -p 389 -D "cn=directory manager" -w - "uid=bassimane, ou=People, dc=example,dc=com"
Enter bind password:


5.エントリの修正

ディレクトリのエントリを削除するには、ldapdelete コマンドを使用します。

# ldapdelete -h localhost -p 389 -D "cn=directory manager" -w - "uid=bassimane, ou=People, dc=example,dc=com"
Enter bind password:


6.LDAPサーバーへのデータの追加


7.LDAPサーバーへのデータの追加


8.LDAPサーバーのパスワードの変更


z. 出題範囲概要

概要 :
  • LDAPサーバーの照会と更新ができる。また、アイテムの追加およびインポートと、ユーザの追加および管理も含まれる。

詳細 :
  • データ管理のLDAPユーティリティ
    ldapadd, ldapdelete, ldapmodify
  • LDAPディレクトリを照会する。
    ldapsearch
  • ユーザのパスワードを変更する。
    ldappasswd

  [ 例題 ] 


         

    www.it-shikaku.jp